<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>   
    'use strict';  
// 练习一
// 不要使用 JavaScript 内置的 parseInt() 函数，利用 map 和 reduce 操作实现一个string2int()函数：
function string2int(s) {
    var index=s.split("");
    function toInt(abcd) {
        return 1*abcd;
    }
    var mapindex=index.map(toInt);
    var result=mapindex.reduce(
        function(a,b) {
            return a*10+b;
        }
    )
    return result;

}

// 测试:
if (string2int('0') === 0 && string2int('12345') === 12345 && string2int('12300') === 12300) {
    if (string2int.toString().indexOf('parseInt') !== -1) {
        console.log('请勿使用parseInt()!');
    } else if (string2int.toString().indexOf('Number') !== -1) {
        console.log('请勿使用Number()!');
    } else {
        console.log('测试通过!');
    }
}
else {
    console.log('测试失败!');
}


// 练习二
// 请把用户输入的不规范的英文名字，变为首字母大写，其他小写的规范名字。输入：['adam', 'LISA', 'barT']，输出：['Adam', 'Lisa', 'Bart']。
function normalize(arr) {
    function PDdxx(word) {
        var firstw="";
        var lastw="";
        for (let i = 0; i < word.length; i++) {
            if (i===0) {
                firstw=word[i].toUpperCase();
            } else {
                lastw=lastw+word[i].toLowerCase();
            }   
        } 
        var resultword=firstw+lastw;   
        return resultword;
    }
    var result=arr.map(PDdxx);
    return result;

}

// 测试:
if (normalize(['adam', 'LISA', 'barT']).toString() === ['Adam', 'Lisa', 'Bart'].toString()) {
    console.log('测试通过!');
}
else {
    console.log('测试失败!');
}


// 练习三
// 小明希望利用map()把字符串变成整数，他写的代码很简洁：
var arr = ['1', '2', '3'];
var r;
r = arr.map(arr=>parseInt(arr,10));

console.log(r);
// 结果竟然是1, NaN, NaN，小明百思不得其解，请帮他找到原因并修正代码。

// 提示：参考Array.prototype.map()的文档。


// 练习四
// 请尝试用filter()筛选出素数：
function get_primes(arr) {
    let result=[];
    result=arr.filter(function(index){
        if (index===2) { 
            return index;
        }
        else if(index!=1) {
            var kon=123;
            for (let i = 2; i <= Math.sqrt(index); i++) {
                if (index % i===0) {
                kon=321;
                break;
                }
            }
        }
        if (kon===123) {
        return index;            
    }
    })
    return result;

}

// 测试:
var
    x,
    r,
    arr = [];
for (x = 1; x < 100; x++) {
    arr.push(x);
}
r = get_primes(arr);
if (r.toString() === [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97].toString()) {
    console.log('测试通过!');
} else {
    console.log('测试失败: ' + r.toString());
}
    </script>
</body>
</html>